Systems and methods for parsing search queries

ABSTRACT

Computer-implemented systems and methods are provided for parsing search queries. In accordance with some embodiments, search records including character strings are retrieved, and search query templates are generated comprising sequences of categories corresponding to character substrings of the character strings. Also, in accordance with some embodiments, search queries are parsed into character substrings and matched with a search query template. The search query template may then be used to associate categories with the character substrings. A search engine may use the categories to focus or otherwise refine a search based on parsed search query.

BACKGROUND

1. Technical Field

The present disclosure relates to computerized data processing andsearch technologies. More particularly, and without limitation, thepresent disclosure relates to systems and methods for identifying searchquery input scenarios, and techniques for classifying terms and/orphrases of search queries based on known input scenarios.

2. Background

Use of the Internet has grown significantly in recent years. Internetaccess is now available from a variety of devices, such as personalcomputers, laptops, tablets, personal digital assistants (PDAs), mobilephones, smart-phones, televisions, and other devices. With the increasedaccess to the Internet from a wide variety of devices, people havebecome more reliant than ever on online search engines to submit queriesand find desired information.

Web sites offer a variety of different search engines for findingdesired information from a large pool of available information. Bothgeneralized search engines and specialized search engines are available.For example, Google™ and Bing™ provide web sites for conductinggeneralized web searches. Specialized search engines are available forsearching within particular websites or content categories. For example,search engines are available for searching for news, products, jobs,events, entertainment, legal information, medical information,geographic or map information, recipes, friends, real estate and muchmore. There are also specialized search engines for searching forparticular types of content. For example, search engines are availablefor searching for audio files, video files, local content, and othertypes of specific information or content.

Some search engines build searchable indexes of information fromrelational databases, which contain structured information. Thisinformation often contains metadata or is otherwise labeled. Whensearching against such structured information, it is beneficial to labela term or phrase in a search query, and to compare the label with thelabels in the indexed information to obtain more relevant results. Forexample, a user entering a search query for the word “Washington” mayreceive search results relating to George Washington, when the userintended to search for information about Washington, D.C. However, ifthe term “Washington” in the search query were labeled as a city, thesearch engine could search indexed information for only “Washington”terms labeled as referring to the city.

There are a variety of different ways in which search engines allowusers to enter queries. Some search engines provide separate fields orcodes, allowing a user to designate a particular query term or phrase asrelating to a particular type of information, and thereby associate theterm or phrase with a label. For example, a bookseller may provide asearch allowing a user to search through only book titles or authornames for a particular term. However, requiring a user to select a fieldor code may overly restrict the scope of a search, or may confuse users.

Other search engines provide a field for entering a search query in anatural language format. These search engines may separate a searchquery into terms after the user has entered the search query, and maysearch for all combinations of the terms. However, such an approach iscomputationally intensive and error prone. Alternatively, search enginesmay attempt to identify types of terms in a natural language searchbased on comparisons with pre-stored terms in a dictionary or database.However, such an approach may introduce a large number of falsepositives for queries whose terms were not intended to have the samemeaning as the corresponding terms in the dictionary. Accordingly, whileit would be beneficial to label terms or phrases in search queries,current approaches are computationally intensive, error prone,restrictive, and/or confusing for users.

SUMMARY

Embodiments of the present disclosure provide improved systems andmethods for parsing search queries. Embodiments of the presentdisclosure also provide systems and methods for semantically annotatingterms or phrases of search queries. Embodiments of the presentdisclosure also encompass techniques for generating query templates ofcommon search query structures for use in parsing and semanticallyannotating terms or phrases of search queries. The embodiments presentedherein also address one or more of the disadvantages of conventionalsystems and methods, such as those highlighted above.

In accordance with the present disclosure, there is provided a computerimplemented method for parsing a search query. The method comprises oneor more steps performed by at least one processor, including receiving acharacter string, identifying a sequence of character substrings in thecharacter string, and retrieving, from a storage device, a search querytemplate including a sequence of categories. The method also comprisesdetermining, by at least one processor, that a character substring inthe sequence of character substrings corresponds to a category in thesequence of categories and associating the category with the charactersubstring.

Also in accordance with the present disclosure, there is provided acomputer system for parsing a search query. The computer systemcomprises a memory device that stores a set of instructions and at leastone processor that executes the set of instructions. The at least oneprocessor is configured to receive a character string, identify asequence of character substrings in the character string, and retrieve asearch query template including a sequence of categories. The processoris also configured to determine that a character substring in thesequence of character substrings corresponds to a category in thesequence of categories and associate the category with the charactersubstring.

Further in accordance with the present disclosure, there is provided anon-transitory computer-readable medium that stores a set ofinstructions that, when executed by at least one processor, configuresthe at least one processor to carry out a method. The method comprisesreceiving a character string, identifying a sequence of charactersubstrings in the character string, and retrieving a search querytemplate including a sequence of categories. The method also comprisesdetermining that a character substring in the sequence of charactersubstrings corresponds to a category in the sequence of categories andassociating the category with the character substring.

Before explaining exemplary embodiments consistent with the presentdisclosure in detail, it is to be understood that the disclosure is notlimited in its application to the details of constructions and to thearrangements set forth in the following description or illustrated inthe drawings. The disclosure is capable of embodiments in addition tothose described and is capable of being practiced and carried out invarious ways. Also, it is to be understood that the phraseology andterminology employed herein, as well as in the abstract, are for thepurpose of description and should not be regarded as limiting.

The accompanying drawings, which are incorporated and constitute part ofthe specification, illustrate certain embodiments of the disclosure, andtogether with the description, serve to explain the principles of thedisclosure.

As such, those skilled in the art will appreciate that the conceptionupon which this disclosure is based may readily be utilized as a basisfor designing other structures, methods, and/or systems for carrying outthe several purposes of the present disclosure. It is important,therefore, to recognize that the claims should be regarded as includingsuch equivalent constructions insofar as they do not depart from thespirit and scope of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an exemplary method for identifying a sequence ofcategories corresponding to a search query and storing the sequence as aquery form, consistent with embodiments of the present disclosure.

FIG. 2 illustrates an exemplary method for identifying a sequence ofcategories corresponding to a sequence of character substrings of asearch query, consistent with embodiments of the present disclosure.

FIG. 3 illustrates an exemplary method for identifying the mostfrequently occurring sequences of categories in search queries,consistent with embodiments of the present disclosure.

FIG. 4 illustrates an exemplary method for identifying a sequence ofcharacter substrings of a search query and storing the sequence ofcharacter substrings in a queue, consistent with embodiments of thepresent disclosure.

FIG. 5 illustrates an exemplary method for applying query templates to aqueue of character substrings to determine whether one of the querytemplates matches the sequence of character substrings, consistent withembodiments of the present disclosure.

FIG. 6 illustrates an exemplary computing environment for implementingembodiments and features consistent with the present disclosure.

FIG. 7 illustrates an exemplary computer system for implementingembodiments and features consistent with the present disclosure.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

Reference will now be made in detail to the present embodiments of thedisclosure, certain examples of which are illustrated in theaccompanying drawings.

Embodiments of the present disclosure encompass computer-implementedsystems and methods for parsing search queries. Embodiments of thepresent disclosure also provide computer-implemented systems and methodsthat generate a list of query templates. Such systems and methods mayretrieve a log of past search queries and identify query forms for thepast search queries. The most frequently occurring query forms may bestored as query templates in a list of query templates. A searchprovider may then use the query templates to parse and semanticallyannotate future search queries.

Embodiments of the present disclosure also encompasscomputer-implemented systems and methods that utilize a list of querytemplates to parse search queries. Such systems and methods may comparesequences of terms or phrases in search queries with the querytemplates. When matching query templates are found, the terms or phrasesin the search queries may be semantically annotated based on the form ofthe query template.

Embodiments of the present disclosure further encompasscomputer-implemented systems and methods that can address the problemsof conventional online search services and techniques. For example,embodiments of the present disclosure provide improved systems andmethods that can identify a form of a search query based on a pre-storedquery template. Users often enter search queries in the same manner. Byusing pre-stored templates of common query forms, a search provider canbetter determine a user's intent when parsing a search query. Thisallows the search provider to better classify the terms or phrases of asearch query and provide more relevant search results. Furthermore,systems and methods consistent with the present disclosure may provideincreased customer satisfaction of a search provider's services, whichmay stimulate additional use of these search services. This may resultin higher revenue for the search provider through, for example,additional sales of online advertising associated with the searchservices.

In accordance with embodiments described herein, a search provider mayprovide one or more web servers including a search engine for processinguser search queries received over a network, such as the Internet. Asearch query may include one or more terms or phrases submitted by auser to search an available pool of information indexed by the webserver(s). The web server(s) may receive a search query as a characterstring including one or more terms or phrases.

A character string may include a sequence of characters. The sequence ofcharacters may include one or more alphanumeric characters, accentedcharacters, diacritics, spaces, character returns, punctuation, and/orany other character commonly entered by a user with a keyboard and/orprovided in a character-encoding scheme, such as American Standard Codefor Information Interchange (ASCII) or UCS Transformation Format-8-bit(UTF-8). A character string may include one or more query terms orphrases entered by a user. For example, a character string may includeone or more words, phrases, abbreviations, acronyms, and/or numbers.

FIG. 1 illustrates an exemplary method 100, consistent with embodimentsof the present disclosure. Exemplary method 100 may be implemented in acomputing environment (see, e.g., FIG. 6) using one or more computersystems (see, e.g., FIG. 7). In some embodiments, method 100 isperformed by one or more web servers or computer systems associated witha search engine that is accessible to users over a network, such as theInternet.

In step 101, a record is retrieved. The record may be indicative of aprior search attempt, and may be retrieved from a query log of priorsearch attempts. The record may include, for example, a characterstring, an identifier, an indication of a time, and/or an indication ofa number of results returned from the search attempt. The characterstring may include a sequence of one or more character substrings, suchas terms or phrases, entered by a user during the search attempt. Forexample, a character string “pizza Arlington Va.” may comprise asequence of character substrings (“pizza”, “Arlington”, “VA”), or asequence of character substrings (“pizza”, “Arlington Va.”). Theidentifier may identify the user's search session with a sessionidentifier or a user identifier. The indication of time may indicate atime when the search attempt was conducted.

In step 102, one or more character substrings of the character stringmay be classified into a sequence of one or more categories. A categorymay include any category, including, for example, a preposition (forterms such as “near”, “around”, and “in”, for example), street,neighborhood, county, postal code, city, state, country, franchise, orsearch substring. For example, “pizza Arlington Va.” may be classifiedinto a sequence of categories (search substring, city, state), with“pizza” classified as a search substring, Arlington classified as acity, and VA classified as a state. Alternatively, “pizza Arlington Va.”may be classified into a sequence of categories (search substring,location), with “pizza” classified as a search substring, and ArlingtonVa. classified as a location.

In step 103, the sequence of categories may be stored as a query form ina database of query forms. For example, the sequence (search substring,city, state) may be stored as the form of the query entered by the userin the search attempt.

Many different approaches may be taken to classify the charactersubstrings of a character string into a sequence of categories. Forexample, web server(s) or computer system(s) may include programmedinstructions for automatically determining the sequence of categories.Alternatively, an operator of the web server(s) or computer system(s)may review a character string of a search query record, determine acategory for substrings in the character string, and create a query formcontaining a sequence of categories corresponding to the substrings.

FIG. 2 illustrates an exemplary method 200 for automatically determininga sequence of categories, consistent with embodiments of the presentdisclosure. Similar to method 100, exemplary method 200 may beimplemented in a computing environment (see, e.g., FIG. 6) using one ormore computer systems (see, e.g., FIG. 7). Further, method 200 may beimplemented on the same or different web server(s) or computer system(s)associated with the other exemplary methods disclosed herein, includingmethod 100. Moreover, step 102 of method 100 may be performed utilizingmethod 200, for example.

In step 201, a character string may be normalized into a standardformat. This may involve one or more of, for example, capitalizing afirst character of one or more words, removing punctuation, removing oneor more spaces between words, removing one or more character accents ordiacritics, and normalizing standard terms (e.g., Street->St,Saint->St). A character string such as “pizza, reston?” may benormalized to “Pizza Reston”, for example. Normalizing the characterstring may make it easier for the system to classify substrings of thecharacter string.

In step 202, a sequence of substrings in the character string may bedetermined. This may occur in a variety of ways. For example, someprogramming languages, such as PHP, provide for easy determination ofterms from a character string. Alternatively, the character string maybe broken into a sequence of terms by tokenizing the character stringbased on a predetermined character delimiter, such as a space. Once thesequence of character substrings has been determined, the method mayproceed to step 203.

In step 203, character substrings from the sequence may be compared withan annotation database containing terms or phrases already annotatedwith corresponding term or phrase categories. For example, charactersubstrings from the sequence may be compared with terms or phrases in adictionary categorizing terms or phrases. In step 204, if there is amatch between a character substring and a term or phrase in theannotation database, the character substring may be classified with thecategory corresponding to the matching term or phrase. The result mayinclude a sequence of categories corresponding to the sequence ofcharacter substrings. Once the sequence of categories has beendetermined, the method may proceed to step 103 of method 100, forexample.

FIG. 3 illustrates another exemplary method 300, consistent withembodiments of the present disclosure. Similar to methods 100 and 200,exemplary method 300 may be implemented in a computing environment (see,e.g., FIG. 6) using one or more computer systems (see, e.g., FIG. 7).Further, method 300 may be implemented on the same or different webserver(s) or computer system(s) associated with the other exemplarymethods disclosed herein, including methods 100 and 200.

In step 301, a frequency in which a query form appears in a database ofquery forms may be determined. The database of query forms may begenerated, for example, by repeatedly performing method 100 for searchrecords in a query log. For example, method 100 may be performed untilthe method has been performed on all of the search records in a querylog. In step 302, it may be determined whether the frequency in whichthe query form appears in the database of query forms meets a determinedthreshold frequency value. If the frequency does not meet the determinedthreshold frequency value, method 300 may end. If the frequency doesmeet the determined threshold frequency value, method 300 may proceed tostep 303. In step 303, the query form may be stored as a query templatein a listing of query templates. The frequency with which query formsappear in a database may be determined automatically on a regular basisor in real-time by, for example, programmed instructions executed by oneor more web server(s) or computer system(s). Alternatively, an operatormay select a query form from the database of query forms to determine afrequency with which it appears. An operator may also graph adistribution of the frequency in which query forms appear in thedatabase of query forms in a histogram, for example. The operator maythen select a query form from among those appearing most frequently forstorage in a listing of query templates.

A query form may also be modified prior to or after storage as a querytemplate in the list of query templates. For example, a “city” categoryin a query template may be modified to correspond only to popularcities, such as cities containing at least a certain population size.Alternatively, a category may be split into subcategories over aplurality of query templates. For example, a plurality of querytemplates may be created, each containing a city subcategorycorresponding to a city of a particular size. For instance, (CityPopulation Category 1, Franchise) and (City Population Category 3,Franchise) query templates may be created, where category 1 may refer tocities with a population of at least 500,000, and where category 3 mayrefer to cities with a population of at least 75,000. Boolean operators,such as AND or OR operators, may also be included between categories ofa query template. For example, a query template (City PopulationCategory 1 AND (Category OR Franchise)) may be created, and may indicatea query requiring both a character substring representing a city ofpopulation category 1 and a character substring representing either acategory or a franchise. Query forms may be modified automatically bythe web server(s) or computer system(s) using defined modificationscenarios or machine learning. Alternatively, an operator may modifyquery forms.

By performing method 300, web server(s) or computer system(s) mayidentify the most common sequences of substring categories entered byusers in search queries, and may store these most common sequences asquery templates. These query templates may then be used by the webserver(s) or computer system(s) to more quickly and accurately parsefuture search queries, as further described below. Examples of generatedquery templates may include, for example, (City AND State AND PostalCode), (Street AND City AND State AND Postal Code), (Search Term ANDPostal Code), (City Population Category 1 AND (Category OR Franchise)),(City), (State), (Country), (Street), and (Known Query).

FIG. 4 illustrates an exemplary method 400, consistent with embodimentsof the present disclosure. Similar to methods 100, 200, and 300,exemplary method 400 may be implemented in a computing environment (see,e.g., FIG. 6) using one or more computer systems (see, e.g., FIG. 7).Further, method 400 may be implemented on the same or different webserver(s) or computer system(s) associated with the other exemplarymethods disclosed herein, including methods 100, 200, and 300, as wellas exemplary method 500.

In step 401, a character string may be received. The character stringmay include a sequence of one or more character substrings, such asterms or phrases, entered by a user during a search attempt. Forexample, a character string “pizza Arlington Va.” may comprise asequence of character substrings (“pizza”, “Arlington”, “VA”), or asequence of character substrings (“pizza”, “Arlington Va.”). In oneembodiment, the search attempt may be pending when the character stringis received.

In step 402, the character string may be normalized into a standardformat. This may involve one or more of, for example, capitalizing afirst character of one or more words, removing punctuation, removing oneor more spaces between words, removing one or more character accents ordiacritics, and normalizing standard terms (e.g., Street->St,Saint->St). A character string such as “pizza, reston?” may benormalized to “Pizza Reston”, for example. Normalizing the characterstring may make it easier for the system to parse and annotate thecharacter string.

In step 403, a sequence of substrings (e.g., terms, phrases) in thecharacter string may be determined. This may occur in a variety of ways.For example, some programming languages, such as PHP, provide for easydetermination of terms from a character string. Alternatively, thecharacter string may be broken into a sequence of substrings bytokenizing the character string based on a predetermined characterdelimiter, such as a space. In step 404, the character substrings of thesequence of character substrings may be stored in a queue in sequentialorder. After the character substrings are stored in a queue, the methodmay proceed to step 501 of method 500.

FIG. 5 illustrates another exemplary method 500, consistent withembodiments of the present disclosure. Similar to the other methodsdisclosed herein, exemplary method 500 may be implemented in a computingenvironment (see, e.g., FIG. 6) using one or more computer systems (see,e.g., FIG. 7). Further, method 500 may be implemented on the same ordifferent web server(s) or computer system(s) associated with the otherexemplary methods disclosed herein, including method 400 and/or any ofthe other methods disclosed herein.

Method 500 may iteratively apply query templates from the list of querytemplates to the queue of substrings until a matching query template isfound. The query templates may be applied in a particular order. Forinstance, a query template that requires the least amount of processingto identify matches or that provides the most accurate matches may beapplied first. For example, the web server(s) or computer system(s) mayfirst apply a (City AND State AND Postal Code) template, followed by a(Street AND City AND State AND Postal Code) template, followed by a(Search Substring AND State AND Postal Code) template, followed by a(City Population Category 1 AND (Category OR Franchise)) template,followed by a (Known Query) template. Once a match occurs between asequence of substrings and one of these templates, the iterative processmay end.

In step 501, a new query template may be applied to the queue ofcharacter substrings. For example, the queue of substrings may be“Tomato”, “PA”, “17603” from an original character string “Tomato PA17603”. In this example, the user may have intended to search for arestaurant with the word “Tomato” in the name, located in Pennsylvaniain postal code 17603. In step 501, the web server(s) or computersystem(s) may also create a new context object in which to store matchesbetween the substrings and categories of the query template. If this isthe first time step 501 is applied to the queue of substrings, theapplied query template may be the query template identified as the firstto be applied in a particular order. For example, the system may firstapply a (City AND State AND Postal Code) template. In step 502, a nextsubstring in the queued substrings is compared to the next category inthe query template. The substrings may be compared with the categoriesof the query template in sequential order, or reverse sequential order,based on whether the first or last category operator in the template hasa higher level of granularity. For example, if the template is (City ANDState AND Postal Code), the substrings may be compared with thecategories in reverse sequential order, because identifying a substringas a postal code may require less processing than identifying analphabetical substring as a city.

In step 503, the web server(s) or computer system(s) may determinewhether the substring matches the category. In the case of categorieswith Boolean OR operators disposed between them, the web server(s) orcomputer system(s) may determine whether the substring matches any ofthe categories that are ORed together. If it is determined that thesubstring does not match the category, the method may proceed to step504. In step 504, the context object may be deleted and the method mayproceed to step 505. In step 505, the web server(s) or computersystem(s) may determine whether the last template applied to the queuewas the last template to be applied in the order of templates. If itwas, method 500 may end. If it was not, method 500 may start over andthe next query template may be applied to the full queue of substrings.

If in step 503, the web server(s) or computer system(s) insteaddetermines that the substring does match the category, the method mayproceed to step 506. In step 506, an association between the substringand the matched category in a context object may be stored (e.g., in adatabase) and the method may proceed to step 507. In step 507, the webserver(s) or computer system(s) may determine whether the last matchedsubstring was the last substring in the queue. If it was not, the methodmay proceed to step 508. In step 508, the web server(s) or computersystem(s) may determine whether the last compared category of the querytemplate was the last category in the query template. If it was the lastcategory in the query template, the method may proceed to step 504. Ifit was not the last category in the query template, the method mayproceed to step 502, where the next substring in the queue of substringsmay be compared to the next category in the template. If step 503 lastdetermined whether the substring matched one of a plurality of ORedcategories, the next category in the template may be the next ANDedcategory. If in step 507 the last matched substring was the lastsubstring in the queue, the method may proceed to step 509. In step 509,the web server(s) or computer system(s) may determine whether the lastcategory compared was the last category in the template. If it was not,the method may proceed to step 504. If it was, the context object may beoutput and/or stored.

By way of example, consider the application of method 500 to a sequenceof substrings “Tomato”, “PA”, and “17603”, and that may apply querytemplates in the following order: (City AND State AND Postal Code),followed by (Street AND City AND State AND Postal Code), followed by(Search Substring AND State AND Postal Code), followed by (CityPopulation Category 1 AND (Category OR Franchise)), followed by (KnownQuery). In applying (City AND State AND Postal Code), the web server(s)or computer system(s) may first determine that “17603” matches PostalCode, and then determine that “PA” matches State, but may find that“Tomato” does not match City. Similarly, in applying (Street AND CityAND State AND Postal Code), the web server(s) or computer system(s) maydetermine that the template does not match upon determining that“Tomato” does not match City. In applying (Search Substring AND StateAND Postal Code), the web server(s) or computer system(s) may determinethat “17603” matches Postal Code, “PA” matches State, and “Tomato”matches Search Substring. Accordingly, the context object may be outputfor storing these category and character substring associations. Thus,by performing methods 400 and 500 on a character string, the characterstring may be matched with a query template identifying a structure ofthe query, and terms or phrases of the character string may beassociated with search categories based on the identified structure.

In performing step 503 of method 500, different approaches may beimplemented for matching a character substring with a query templatecategory. These approaches may differ based on the query templatecategory. For example, a pattern matching approach may be used todetermine whether a character substring is a postal code. Such a patternmatching approach may determine whether the character substringcorresponds to a pre-determined pattern, such as whether it is fivedigits long (e.g., “17603”), five digits followed by a space followed byfour digits (e.g., “17603 3805”), or five digits followed by a hyphenfollowed by four digits (e.g., “17603-3805”). If a character substringmatches any of these patterns, the web server(s) or computer system(s)may determine that the substring matches the category Postal Code. Othercategories may be matched with a character substring by using one ormore files of known terms or phrases corresponding to the categories.For example, the web server(s) or computer system(s) may determinewhether a character substring matches the category State by identifyingwhether the character substring appears in a listing of termsrepresenting states. The listing may store a plurality of terms orphrases for each state. For example, the listing may store“Pennsylvania”, “PA”, “Penna”, or “Keystone State” to capture a varietyof user query terms corresponding to the state of Pennsylvania.Similarly, the web server(s) or computer system(s) may determine whethera character substring matches the category City by determining whetherthe character substring appears in a listing of terms or phrasesrepresenting cities. The web server(s) or computer system(s) may alsodetermine whether a character substring matches a category Known Querybased on whether the character substring appears in a listing of termsor phrases representing known queries.

For some of the query template categories, a listing of terms or phrasesmay not be sufficient. For example, it may be difficult to match acategory Street with a character substring, because street names arelong and easily misspelled. When attempting to match a charactersubstring with a category Street, the character substring may benormalized into a standard format. For example, a character substring“North Charlotte Avenue” may be normalized to “N Charlotte Ave”. Thismay make it easier to perform the comparison. The normalized substringmay then be compared to terms or phrases representing street names in alist. To account for minor misspellings, an algorithmic spell checkermay be used to accommodate minor differences between the charactersubstring and the corresponding terms or phrases in a list.Alternatively, an editorialized spell checker may be used to account fordifferences between the character substring and the terms or phrases ina list. The editorialized spell checker may pair incorrectly spelledterms or phrases with correctly spelled terms or phrases. For example,the editorialized spell checker may store common city state mismatches(e.g., Hilton Head NC->Hilton Head SC).

As previously noted, method 500 may attempt to match query templateswith a sequence of character substrings until a match is found. Once amatch is found and the context object is output, method 500 may end. Inaddition to this “return on first match” approach, other approaches maybe implemented to classify a sequence of character substrings. In oneadditional approach, a plurality of query templates may be applied inaggregate, and associate character substrings with categories from eachquery template that matches. For example, query templates (Street),(City), (State), and (Country) may all be compared with a charactersubstring, such as “Lancaster.” Since Lancaster is both the name of acity in Pennsylvania, and a street in Baltimore, Md., the charactersubstring may be associated with both City and Street categories in acontext object.

After method 500 has been completed and a context object has beenoutput, the context object may be used to search an available pool ofinformation indexed by one or more web servers. Some of this informationmay be structured, and may contain metadata or be otherwise labeled.Character substrings from the context object may be searched againstthis information, and the categories associated with the charactersubstrings may be compared with the labels and metadata in the indexedinformation to obtain more relevant results. Additionally oralternatively, the context object information may be utilized in one ormore search algorithms to focus or otherwise refine a search.

FIG. 6 is a diagram illustrating an exemplary computing environment 600for implementing embodiments consistent with the present disclosure,including the above-described exemplary methods and features. Incomputing environment 600, a search provider may provide one or morecomputer system(s) 601 that enables search services. Computer system(s)601 may include one or more web servers or other computing platforms forhosting web pages and/or software applications that handle and processsearch queries. Computer system 601 may also include back-end serversfor processing current search queries, or analyzing past search queries.

A network 602 may connect computer system(s) 601 with one or more clientdevice(s) 603. Network 602 may provide for the exchange of information,such as search queries and results, between client device(s) 603 andcomputer system(s) 601. Network 602 may include one or more types ofnetworks interconnecting computer system(s) 601 with client device(s)603. For example, one client device 603 may communicate with one or morecomputer system(s) 601 over a coaxial cable network, while a differentclient device 603 may communicate with one or more computer system(s)601 over a cellular network. Network 602 may include one or more widearea networks (WANs), metropolitan area networks (MANs), local areanetworks (LANs), or any combination of these networks. Network 602 mayinclude a combination of a variety of different network types, includingInternet, Ethernet, twisted-pair, coaxial cable, fiber optic, cellular,satellite, IEEE 802.11, terrestrial, and/or other types of networkconnections. In some embodiments, network 602 comprises the Internet.

Client devices 603 may include a variety of different types of computingdevices capable of communicating with computer system(s) 601 overnetwork 602. These computing devices may include personal computers,laptops, personal digital assistants (PDA), telephones, televisions,set-top boxes, mobile phones, smart-phones, tablet computers, servers,and/or other types of computing devices. A user may use more than onetype of client device to communicate with computer system(s) 601.

FIG. 7 is a diagram illustrating an exemplary computer system 601 thatmay be used for implementing embodiments consistent with the presentdisclosure, including the exemplary systems and methods describedherein. Computer system 601 may include one or more computers 700, whichmay be servers, personal computers, and/or other types of computingdevices. Each computer 700 may include one or more processors 701 thatmay be any suitable type of processor. Processor 701 may be coupled to anetwork interface 702 for receiving and/or transmitting data and/orcommands to/from other devices over a variety of networks, such asInternet. Ethernet, twisted-pair, coaxial cable, fiber optic, cellular,satellite, IEEE 802.11, terrestrial, or other wired or wirelessnetworks.

Processor 701 may be coupled to one or more memory device(s) 703. Eachmemory device 703 may be configured to store instructions that, whenexecuted by one or more processors 701, carry out the methods andtechniques consistent with the present disclosure, including theexemplary methods and techniques described herein. Memory device 703 mayalso store an operating system, software applications, and/orparameters. Data stored on memory device 703 may be stored in a singlededicated memory, or over a plurality of memory devices. Memory device703 may include any type of memory, physical, non-transient, volatile,or non-volatile, including, but not limited to, random access memory(RAM) 705, read-only memory (ROM) 706, magnetic strip storage,semiconductor storage, optical disc storage, and/or magneto-optical discstorage.

Memory device 703 may also include one or more database(s) 704 forstoring search query information, such as search query logs and searchrecords, statistical information regarding search queries, and/or anyother information or data stored as a result of performing the disclosedmethods, or required to perform the disclosed methods. For example,database(s) 704 may store a list of query templates and a plurality ofquery forms, as disclosed herein. Processor 701 may also be coupled to acomputer providing a user interface for allowing input of informationand commands to processor 701 and/or for allowing output of informationand commands in a human-readable form.

As disclosed herein, search query records may be analyzed to identifycommon search query forms. The most frequently occurring query forms maybe stored as query templates in a listing of query templates. Thesequery templates may then be used for parsing and semantically annotatingfuture search queries.

As also disclosed herein, a list of query templates may be used to parseand/or semantically annotate search queries. The query templates may begenerated using one or more of methods 100, 200, or 300, as describedherein. Alternatively, query templates may be retrieved from anothersource, or manually created by an operator. Through use of the methodsdescribed herein, a context object may be output for storage and/or usein a search. The context object may include one or more terms or phrasesof a search query, and may associate the one or more terms or phraseswith one or more categories.

The disclosed systems and methods provide a useful way of labelingsearch terms or phrases to yield more successful search results. Forexample, query templates can be created that represent the ways usersmost commonly enter search queries. These query templates may then beused in a search engine for quickly and accurately categorizing terms orphrases of a search query for focusing or otherwise further refining asearch.

The many features and advantages of the disclosure are apparent from thedetailed specification, and thus, it is intended that the appendedclaims cover all systems and methods, which fall within the true spiritand scope of the disclosure. As used herein, the indefinite articles “a”and “an” mean “one or more” in open-ended claims containing thetransitional phrase “comprising,” “including,” and/or “having.” Further,since numerous modifications and variations will readily occur to thoseskilled in the art, it is not desired to limit the disclosure to theexact construction and operation illustrated and described, andaccordingly, all suitable modifications and equivalents may be resortedto, falling within the scope of the disclosure.

What is claimed is:
 1. A computer-implemented method for improving therelevance of search results, comprising: receiving a character string;identifying, by at least one processor, a sequence of charactersubstrings in the character string; generating, by the at least oneprocessor, context objects for performing a search, the context objectsstoring associations between categories and character substrings, thegenerating comprising: retrieving, from a storage device, a first searchquery template including a first sequence of categories, storing, in afirst context object, an association between a first category of thefirst sequence and a first character substring in the sequence ofcharacter substrings, deleting the first context object based on acomparison of a second character substring in the sequence of charactersubstrings and a second category of the first sequence, determining thatthe first character substring in the sequence of character substringscorresponds to a third category in a second sequence of categoriesincluded in a second search query template retrieved from the storagedevice, and storing, in a second context object, an association betweenthe third category of the second sequence and the first charactersubstring; searching indexed information using at least the secondcontext object by comparing the third category with labels and/ormetadata of the indexed information to generate search results; andproviding the search results in response to the received characterstring.
 2. The computer-implemented method of claim 1, furthercomprising determining, based on the categories of the second searchquery template, whether to determine if an initial character substringin the sequence of character substrings corresponds to an initialcategory in the second sequence of categories, or to determine if thelast character substring in the sequence of character substringscorresponds to the last category in the second sequence of categories.3. The computer-implemented method of claim 1, the third categoryrepresenting one of a preposition, street, neighborhood, county, postalcode, city, state, country, or franchise.
 4. The computer-implementedmethod of claim 1, wherein determining that the first charactersubstring of the sequence of character substrings corresponds to thethird category in the second sequence of categories comprises one ormore of: identifying that the first character substring matches acharacter pattern corresponding to the third category; and identifyingthat the first character substring matches a term or phrase in a listingof terms or phrases corresponding to the third category.
 5. Thecomputer-implemented method of claim 1, further comprising: determiningthat a second character substring in the sequence of charactersubstrings corresponds to a fourth category of the second sequence ofcategories; associating the fourth category with the second charactersubstring; and storing in the second context object an associationbetween the fourth category and the second character substring.
 6. Acomputer system for improving the relevance of search results,comprising: a memory device that stores a set of instructions; and atleast one processor that executes the set of instructions, causing thecomputer system to perform operations comprising: receiving a characterstring; identifying a sequence of character substrings in the characterstring; generating context objects for performing a search, the contextobjects storing associations between categories and the charactersubstrinqs, the generating comprising: retrieving a first search querytemplate including a first sequence of categories, storing, in a firstcontext object, an association between a first category of the firstsequence and a first character substring in the sequence of charactersubstrings, deleting the first context object based on a comparison of asecond character substring in the sequence of character substrings and asecond category of the first sequence, determining that the firstcharacter substring in the sequence of character substrings correspondsto a third category in a second sequence of categories included in asecond retrieved search query template, and storing, in a second contextobject, an association between the third category of the second sequenceand the first character substring; searching indexed information usingat least the second context object by comparing the third category withlabels and/or metadata of the indexed information to generate searchresults; and providing the search results in response to the receivedcharacter string.
 7. The computer system of claim 6, wherein theoperations further comprise determining, based on the categories of thesecond retrieved search query template, whether to determine if aninitial character substring in the sequence of character substringscorresponds to an initial category in the second sequence of categories,or to determine if the last character substring in the sequence ofcharacter substrings corresponds to the last category in the secondsequence of categories.
 8. The computer system of claim 6, the thirdcategory representing one of a preposition, street, neighborhood,county, postal code, city, state, country, franchise, or searchsubstring.
 9. The computer system of claim 6, the operations furthercomprising: determining that a second character substring in thesequence of character substrings corresponds to a fourth category of thesecond sequence of categories; associating the fourth category with thesecond character substring; and storing in the second context object anassociation between the fourth category and the second charactersubstring.
 10. A non-transitory computer-readable medium that stores aset of instructions for improving the relevance of search results that,when executed by at least one processor of a computer system, configuresthe computer system to perform operations comprising: receiving acharacter string; identifying a sequence of character substrings in thecharacter string; generating, by the at least one processor, contextobjects for performing a search, the context objects storingassociations between categories and the character substrings, thegenerating comprising: retrieving a first search query templateincluding a first sequence of categories, storing, in a first contextobject, an association between a first category of the first sequenceand a first character substring in the sequence of character substrings,deleting the first context object based on a comparison of a secondcharacter substring in the sequence of character substrings and a secondcategory of the first sequence, determining that the first charactersubstring in the sequence of character substrings corresponds to a thirdcategory in a second sequence of categories included in a secondretrieved search query template, and storing, in a second contextobject, an association between the third category of the second sequenceand the first character substring; searching indexed information usingat least the second context object by comparing the third category withlabels and/or metadata of the indexed information to generate searchresults; and providing the search results in response to the receivedcharacter string.
 11. The computer-readable medium of claim 10, theoperations further comprising determining, based on the categories ofthe second retrieved search query template, whether to determine if aninitial character substring in the sequence of character substringscorresponds to an initial category in the second sequence of categories,or to determine if the last character substring in the sequence ofsubstrings corresponds to the last category in the second sequence ofcategories.
 12. The computer-readable medium of claim 10, the thirdcategory representing one of a preposition, street, neighborhood,county, postal code, city, state, country, or franchise.
 13. Thecomputer-readable medium of claim 11, wherein determining that the firstcharacter substring of the sequence of character substrings correspondsto the third category in the second sequence of categories comprises oneor more of: identifying that the first character substring matches acharacter pattern corresponding to the third category; and identifyingthat the first character substring matches a term or phrase in a listingof terms or phrase corresponding to the third category.
 14. Thecomputer-readable medium of claim 10, the method further comprising:determining that a second character substring in the sequence ofcharacter substrings corresponds to a fourth category of the secondsequence of categories; associating the fourth category with the secondcharacter substring; and storing in the second context object anassociation between the fourth category and the second charactersubstring.